package br.com.jvet.persistencia;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.Query;

import br.com.jvet.constante.TipoFuncionario;
import br.com.jvet.entidade.Cargo;
import br.com.jvet.entidade.Funcionario;

@Stateless
public class FuncionarioDAO extends AbstractDAO<Funcionario, Integer> {

	public FuncionarioDAO() {
		super(Funcionario.class);
	}

	public boolean consultarPorCpf(Funcionario funcionario) {
		Query c = super.getEntityManager().createQuery(
				"SELECT c FROM " + Funcionario.class
						+ " c where cnpjcpf = :cnpjcpf");

		c.setParameter("cnpjcpf", funcionario.getDadosCadastro().getCnpjCpf());

		if (c.getResultList() != null && c.getResultList().size() > 0) {
			return true;
		}
		return false;
	}

	// public DadosCadastro consultarTelefones(Funcionario funcionario) {
	// Query c =
	// super.getEntityManager().createQuery("SELECT c FROM DadosCadastro "
	// + " c join fetch c.telefones where c.codigo =:codigo");
	//
	// c.setParameter("codigo", funcionario.getDadosCadastro().getCodigo());
	//
	// return (DadosCadastro) c.getSingleResult();
	// }

	@SuppressWarnings("unchecked")
	public List<Funcionario> listaFuncionarioMedico() {

		Query c = super.getEntityManager().createQuery(
				"SELECT f FROM " + Funcionario.class.getSimpleName()
						+ " f where f.cargo.tipoFuncionario =:codigo");

		c.setParameter("codigo", TipoFuncionario.MEDICO);

		return ((List<Funcionario>)c.getResultList());
	}
	
	
	@SuppressWarnings("unchecked")
	public List<Funcionario> listaFuncionarioPorCargo(Cargo cargo) {

		if(cargo == null || cargo.getCodigo()==0){
			System.out.println("Cod zero func>>>>>>>>");
			return listar();
		}else{
		
		Query c = super.getEntityManager().createQuery(
				"SELECT f FROM " + Funcionario.class.getSimpleName()
						+ " f where f.cargo =:codigo");

		c.setParameter("codigo",cargo);
		return ((List<Funcionario>)c.getResultList());
		}
		
	}

}
